<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
    <title>Reference</title>
    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
	<!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
</head>

<body>
<div id="container">

<div id="product">
	<div id="product_logo"></div>
	<div id="product_name"><big><b></b></big></div>
	<div id="product_description"></div>
</div> <!-- id="product" -->

<div id="main">

<div id="navigation">


<h1>LuaDoc</h1>
<ul>
	
	<li><a href="../index.html">Index</a></li>
	
</ul>


<!-- Module list -->

<h1>Modules</h1>
<ul>

	<li>
		<a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
	</li>

	<li>
		<a href="../modules/luci.http.html">luci.http</a>
	</li>

	<li>
		<a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
	</li>

	<li>
		<a href="../modules/luci.http.date.html">luci.http.date</a>
	</li>

	<li>
		<a href="../modules/luci.http.mime.html">luci.http.mime</a>
	</li>

	<li>
		<a href="../modules/luci.i18n.html">luci.i18n</a>
	</li>

	<li>
		<a href="../modules/luci.ip.html">luci.ip</a>
	</li>

	<li>
		<a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
	</li>

	<li>
		<a href="../modules/luci.json.html">luci.json</a>
	</li>

	<li>
		<a href="../modules/luci.jsonc.html">luci.jsonc</a>
	</li>

	<li>
		<a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
	</li>

	<li>
		<a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
	</li>

	<li>
		<a href="../modules/luci.model.uci.html">luci.model.uci</a>
	</li>

	<li>
		<a href="../modules/luci.rpcc.html">luci.rpcc</a>
	</li>

	<li>
		<a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
	</li>

	<li>
		<a href="../modules/luci.sys.html">luci.sys</a>
	</li>

	<li>
		<a href="../modules/luci.sys.init.html">luci.sys.init</a>
	</li>

	<li>
		<a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
	</li>

	<li>
		<a href="../modules/luci.sys.net.html">luci.sys.net</a>
	</li>

	<li><strong>luci.sys.process</strong></li>
	
	<li>
		<a href="../modules/luci.sys.user.html">luci.sys.user</a>
	</li>

	<li>
		<a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
	</li>

	<li>
		<a href="../modules/luci.util.html">luci.util</a>
	</li>

	<li>
		<a href="../modules/luci.xml.html">luci.xml</a>
	</li>

	<li>
		<a href="../modules/nixio.html">nixio</a>
	</li>

	<li>
		<a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
	</li>

	<li>
		<a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
	</li>

	<li>
		<a href="../modules/nixio.File.html">nixio.File</a>
	</li>

	<li>
		<a href="../modules/nixio.README.html">nixio.README</a>
	</li>

	<li>
		<a href="../modules/nixio.Socket.html">nixio.Socket</a>
	</li>

	<li>
		<a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
	</li>

	<li>
		<a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
	</li>

	<li>
		<a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
	</li>

	<li>
		<a href="../modules/nixio.bin.html">nixio.bin</a>
	</li>

	<li>
		<a href="../modules/nixio.bit.html">nixio.bit</a>
	</li>

	<li>
		<a href="../modules/nixio.crypto.html">nixio.crypto</a>
	</li>

	<li>
		<a href="../modules/nixio.fs.html">nixio.fs</a>
	</li>

</ul>



<!-- File list -->







</div><!-- id="navigation" -->

<div id="content">

<h1>Class <code>luci.sys.process</code></h1>

<p>
 
LuCI system utilities / process related functions. 
</p>







<h2>Functions</h2>
<table class="function_list">

	<tr>
	<td class="name" nowrap><a href="#process.exec">exec</a>&nbsp;(commend, stdout, stderr, nowait)</td>
	<td class="summary">
 
Execute a process, optionally capturing stdio.</td>
	</tr>

	<tr>
	<td class="name" nowrap><a href="#process.info">info</a>&nbsp;()</td>
	<td class="summary">
 
Get the current process id.</td>
	</tr>

	<tr>
	<td class="name" nowrap><a href="#process.list">list</a>&nbsp;()</td>
	<td class="summary">
 
Retrieve information about currently running processes.</td>
	</tr>

	<tr>
	<td class="name" nowrap><a href="#process.setgroup">setgroup</a>&nbsp;(gid)</td>
	<td class="summary">
 
Set the gid of a process identified by given pid.</td>
	</tr>

	<tr>
	<td class="name" nowrap><a href="#process.setuser">setuser</a>&nbsp;(uid)</td>
	<td class="summary">
 
Set the uid of a process identified by given pid.</td>
	</tr>

	<tr>
	<td class="name" nowrap><a href="#process.signal">signal</a>&nbsp;(pid, sig)</td>
	<td class="summary">
 
Send a signal to a process identified by given pid.</td>
	</tr>

</table>






<br/>
<br/>


<h2><a name="functions"></a>Functions</h2>
<dl class="function">



<dt><a name="process.exec"></a><strong>exec</strong>&nbsp;(commend, stdout, stderr, nowait)</dt>
<dd>

 
Execute a process, optionally capturing stdio. 
 
Executes the process specified by the given argv vector, e.g. 
<code>{ "/bin/sh", "-c", "echo 1" }</code> and waits for it to terminate unless a true 
value has been passed for the "nowait" parameter. 
 
When a function value is passed for the stdout or stderr arguments, the passed 
function is repeatedly called for each chunk read from the corresponding stdio 
stream. The read data is passed as string containing at most 4096 bytes at a 
time. 
 
When a true, non-function value is passed for the stdout or stderr arguments, 
the data of the corresponding stdio stream is read into an internal string 
buffer and returned as "stdout" or "stderr" field respectively in the result 
table. 
 
When a true value is passed to the nowait parameter, the function does not 
await process termination but returns as soon as all captured stdio streams 
have been closed or - if no streams are captured - immediately after launching 
the process. 



<h3>Parameters</h3>
<ul>
	
	<li>
	  commend: Table containing the argv vector to execute
	</li>
	
	<li>
	  stdout: Callback function or boolean to indicate capturing (optional)
	</li>
	
	<li>
	  stderr: Callback function or boolean to indicate capturing (optional)
	</li>
	
	<li>
	  nowait: Don't wait for process termination when true (optional)
	</li>
	
</ul>






<h3>Return value:</h3>
Table containing at least the fields "code" which holds the exit 
            status of the invoked process or "-1" on error and "pid", which 
            contains the process id assigned to the spawned process. When 
            stdout and/or stderr capturing has been requested, it additionally 
            contains "stdout" and "stderr" fields respectively, holding the 
            captured stdio data as string.



</dd>




<dt><a name="process.info"></a><strong>info</strong>&nbsp;()</dt>
<dd>

 
Get the current process id. 








<h3>Return value:</h3>
Number containing the current pid



</dd>




<dt><a name="process.list"></a><strong>list</strong>&nbsp;()</dt>
<dd>

 
Retrieve information about currently running processes. 








<h3>Return value:</h3>
Table containing process information



</dd>




<dt><a name="process.setgroup"></a><strong>setgroup</strong>&nbsp;(gid)</dt>
<dd>

 
Set the gid of a process identified by given pid. 



<h3>Parameters</h3>
<ul>
	
	<li>
	  gid: Number containing the Unix group id
	</li>
	
</ul>






<h3>Return values:</h3>
<ol>
	
	<li>Boolean indicating successful operation
	
	<li>String containing the error message if failed
	
	<li>Number containing the error code if failed
	
</ol>



</dd>




<dt><a name="process.setuser"></a><strong>setuser</strong>&nbsp;(uid)</dt>
<dd>

 
Set the uid of a process identified by given pid. 



<h3>Parameters</h3>
<ul>
	
	<li>
	  uid: Number containing the Unix user id
	</li>
	
</ul>






<h3>Return values:</h3>
<ol>
	
	<li>Boolean indicating successful operation
	
	<li>String containing the error message if failed
	
	<li>Number containing the error code if failed
	
</ol>



</dd>




<dt><a name="process.signal"></a><strong>signal</strong>&nbsp;(pid, sig)</dt>
<dd>

 
Send a signal to a process identified by given pid. 



<h3>Parameters</h3>
<ul>
	
	<li>
	  pid: Number containing the process id
	</li>
	
	<li>
	  sig: Signal to send (default: 15 [SIGTERM])
	</li>
	
</ul>






<h3>Return values:</h3>
<ol>
	
	<li>Boolean indicating successful operation
	
	<li>Number containing the error code if failed
	
</ol>



</dd>


</dl>





</div> <!-- id="content" -->

</div> <!-- id="main" -->

<div id="about">
	<p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
</div> <!-- id="about" -->

</div> <!-- id="container" -->
</body>
</html>
